#ifndef _BANK_H_
#define _BANK_H_

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <strings.h>
#include <stdbool.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <errno.h>

//定义消息类型
#define M_EXIT		0		//退出
#define M_OPEN		1		//开户
#define M_LOGIN		2		//登录
#define M_DESTROY 	3		//销户
#define M_UNLOCK 	4		//解锁
#define M_SAVE 		5		//存钱
#define M_TAKE		6		//取钱
#define M_QUERY		7		//查询
#define M_TRANSFER	8		//转账
#define M_REPASS 	9		//改密

#define ACC_PATH 	"account/"				//账户信息保存位置
#define BANK_PATH 	"account/bank.dat"		//卡号信息保存位置

#define MSG_LEN 128			//定义消息长度
#define NAME_LEN 48			//定义名字长度
#define PASS_WORD_LEN 24	//定义密码长度
#define BANK_LEN 10			//定义银行卡号长度
#define IDCARD_LEN 7		//定义身份证长度
#define PATH_LEN 256		//定义路径长度

//定义账户信息结构体
typedef struct Account
{
	char bank[BANK_LEN];				//银行卡号
	char IdCard[IDCARD_LEN];			//身份证号
	char password[PASS_WORD_LEN];		//密码
	float balance;						//余额
	char isLock;						//锁定
}Acc;

//客户端发给服务器端消息结构体
typedef struct ClientToServe
{
	long type;			//消息类型
	Acc acc;			//账户
	pid_t pid;			//客户端进程号
}ClientToServe;

//定义服务器端发给客户端信息结构体
typedef struct ServeToClient
{
	long type;			//消息类型
	char info[MSG_LEN];	//提示消息
}ServeToClient;

#endif //_BANK_H_
